<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE Trustworthy #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE NoImplicitPrelude #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE PatternSynonyms #-}</span><span>
</span><span id="line-4"></span><span>
</span><span id="line-5"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-6"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- Module      :  Type.Reflection</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- Copyright   :  (c) The University of Glasgow, CWI 2001--2017</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- License     :  BSD-style (see the file libraries/base/LICENSE)</span><span>
</span><span id="line-10"></span><span class="hs-comment">--</span><span>
</span><span id="line-11"></span><span class="hs-comment">-- Maintainer  :  libraries@haskell.org</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- Stability   :  experimental</span><span>
</span><span id="line-13"></span><span class="hs-comment">-- Portability :  non-portable (requires GADTs and compiler support)</span><span>
</span><span id="line-14"></span><span class="hs-comment">--</span><span>
</span><span id="line-15"></span><span class="hs-comment">-- This provides a type-indexed type representation mechanism, similar to that</span><span>
</span><span id="line-16"></span><span class="hs-comment">-- described by,</span><span>
</span><span id="line-17"></span><span class="hs-comment">--</span><span>
</span><span id="line-18"></span><span class="hs-comment">-- * Simon Peyton-Jones, Stephanie Weirich, Richard Eisenberg,</span><span>
</span><span id="line-19"></span><span class="hs-comment">-- Dimitrios Vytiniotis. &quot;A reflection on types.&quot;</span><span>
</span><span id="line-20"></span><span class="hs-comment">-- /Proc. Philip Wadler's 60th birthday Festschrift/, Edinburgh (April 2016).</span><span>
</span><span id="line-21"></span><span class="hs-comment">-- ([PDF](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/08/dynamic.pdf))</span><span>
</span><span id="line-22"></span><span class="hs-comment">--</span><span>
</span><span id="line-23"></span><span class="hs-comment">-- The interface provides 'I.TypeRep', a type representation which can</span><span>
</span><span id="line-24"></span><span class="hs-comment">-- be safely decomposed and composed. See &quot;Data.Dynamic&quot; for an example of this.</span><span>
</span><span id="line-25"></span><span class="hs-comment">--</span><span>
</span><span id="line-26"></span><span class="hs-comment">-- @since 4.10.0.0</span><span>
</span><span id="line-27"></span><span class="hs-comment">--</span><span>
</span><span id="line-28"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-29"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Type.Reflection</span><span>
</span><span id="line-30"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><span class="hs-comment">-- * The Typeable class</span></span><span>
</span><span id="line-31"></span><span>      </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier">I.Typeable</span></a></span><span>
</span><span id="line-32"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier">I.typeRep</span></a></span><span>
</span><span id="line-33"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier">I.withTypeable</span></a></span><span>
</span><span id="line-34"></span><span>
</span><span id="line-35"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Propositional equality</span></span><span>
</span><span id="line-36"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Type.Equality.html#%3A~%3A"><span class="hs-operator">(:~:)</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier">Refl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-37"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Type.Equality.html#%3A~~%3A"><span class="hs-operator">(:~~:)</span></a></span><span class="hs-special">(</span><span class="annot"><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier">HRefl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-38"></span><span>
</span><span id="line-39"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Type representations</span></span><span>
</span><span id="line-40"></span><span>      </span><span class="annot"><span class="hs-comment">-- ** Type-Indexed</span></span><span>
</span><span id="line-41"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier">I.TypeRep</span></a></span><span>
</span><span id="line-42"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeOf"><span class="hs-identifier">I.typeOf</span></a></span><span>
</span><span id="line-43"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-identifier">I.App</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con"><span class="hs-identifier">I.Con</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con%27"><span class="hs-identifier">I.Con'</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-identifier">I.Fun</span></a></span><span>
</span><span id="line-44"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier">I.typeRepTyCon</span></a></span><span>
</span><span id="line-45"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTypeRep"><span class="hs-identifier">I.rnfTypeRep</span></a></span><span>
</span><span id="line-46"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier">I.eqTypeRep</span></a></span><span>
</span><span id="line-47"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier">I.typeRepKind</span></a></span><span>
</span><span id="line-48"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#splitApps"><span class="hs-identifier">I.splitApps</span></a></span><span>
</span><span id="line-49"></span><span>
</span><span id="line-50"></span><span>      </span><span class="annot"><span class="hs-comment">-- ** Quantified</span></span><span>
</span><span id="line-51"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-52"></span><span>      </span><span class="hs-comment">-- &quot;Data.Typeable&quot; exports a variant of this interface (named differently</span><span>
</span><span id="line-53"></span><span>      </span><span class="hs-comment">-- for backwards compatibility).</span><span>
</span><span id="line-54"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier">I.SomeTypeRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span>
</span><span id="line-55"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRep"><span class="hs-identifier">I.someTypeRep</span></a></span><span>
</span><span id="line-56"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRepTyCon"><span class="hs-identifier">I.someTypeRepTyCon</span></a></span><span>
</span><span id="line-57"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfSomeTypeRep"><span class="hs-identifier">I.rnfSomeTypeRep</span></a></span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Type constructors</span></span><span>
</span><span id="line-60"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier">I.TyCon</span></a></span><span>           </span><span class="hs-comment">-- abstract, instance of: Eq, Show, Typeable</span><span>
</span><span id="line-61"></span><span>                        </span><span class="hs-comment">-- For now don't export Module, to avoid name clashes</span><span>
</span><span id="line-62"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConPackage"><span class="hs-identifier">I.tyConPackage</span></a></span><span>
</span><span id="line-63"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConModule"><span class="hs-identifier">I.tyConModule</span></a></span><span>
</span><span id="line-64"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier">I.tyConName</span></a></span><span>
</span><span id="line-65"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTyCon"><span class="hs-identifier">I.rnfTyCon</span></a></span><span>
</span><span id="line-66"></span><span>
</span><span id="line-67"></span><span>      </span><span class="annot"><span class="hs-comment">-- * Module names</span></span><span>
</span><span id="line-68"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier">I.Module</span></a></span><span>
</span><span id="line-69"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#moduleName"><span class="hs-identifier">I.moduleName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#modulePackage"><span class="hs-identifier">I.modulePackage</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfModule"><span class="hs-identifier">I.rnfModule</span></a></span><span>
</span><span id="line-70"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html"><span class="hs-identifier">Data.Typeable.Internal</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">I</span></span><span>
</span><span id="line-73"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Type.Equality.html"><span class="hs-identifier">Data.Type.Equality</span></a></span><span>
</span><span id="line-74"></span></pre></body></html>